package com.csun.util;

import java.security.MessageDigest;

import org.junit.Test;

/**
 * @ClassName: StrUtil.java
 * @Description:TODO
 * @author danjinsong danjingsong@dragonwake.cn
 * @date 2017年2月16日下午4:11:04
 * 
 */

public class StrUtil {
	
	@Test
	public void testMd5(){
		System.out.println(MD5("123456"));
	}
	/**
	 * 解析 ids 字符串
	 * @param ids
	 * @return
	 */
	public static Integer[] getIds(String ids){
		String[] idsArray = ids.split(",");
		Integer[] idArray = new Integer[idsArray.length];
		for(int i = 0;i < idsArray.length;i++) 
			idArray[i] = Integer.parseInt(idsArray[i]);
		return idArray;
	}
	/**
	 * 判断是否是空
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str){
		if(str==null||"".equals(str.trim())){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 判断是否不是空
	 * @param str
	 * @return
	 */
	public static boolean isNotEmpty(String str){
		if((str!=null)&&!"".equals(str.trim())){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * Md5加密方法
	 * @param pwd
	 * @return
	 */
	public final static String MD5(String pwd) {
        //用于加密的字符
        char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            //使用平台的默认字符集将此 String 编码为 byte序列，并将结果存储到一个新的 byte数组中
            byte[] btInput = pwd.getBytes();
             
            //信息摘要是安全的单向哈希函数，它接收任意大小的数据，并输出固定长度的哈希值。
            MessageDigest mdInst = MessageDigest.getInstance("MD5");
             
            //MessageDigest对象通过使用 update方法处理数据， 使用指定的byte数组更新摘要
            mdInst.update(btInput);
             
            // 摘要更新之后，通过调用digest（）执行哈希计算，获得密文
            byte[] md = mdInst.digest();
             
            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {   //  i = 0
                byte byte0 = md[i];  //95
                str[k++] = md5String[byte0 >>> 4 & 0xf];    //    5 
                str[k++] = md5String[byte0 & 0xf];   //   F
            }
             
            //返回经过加密后的字符串
            return new String(str);
             
        } catch (Exception e) {
            return null;
        }
    }

}
